Skip to content

Conversation

FlavienRx
Copy link
Contributor

@FlavienRx FlavienRx commented Nov 9, 2024

Description:

This PR refactors the FastAPI server start-up logic to improve the display of the application’s documentation URLs in the console. It introduces a conditional check for app.openapi_url, ensuring that only defined documentation URLs are printed. The updated logic adds more flexibility to display either docs_url, redoc_url, or both, enhancing visibility for users when serving the API.

Changes:

  • Updated import handling with get_import_string_and_app to retrieve both import_string and app for improved compatibility with uvicorn.
  • Enhanced serving_str output formatting to conditionally display API documentation URLs based on availability.
  • Cleaned up conditional print logic to handle cases where only one or both of docs_url and redoc_url are available.

This adjustment improves user experience by making API documentation links visible and accessible only when they are set.

Examples:
image
image
image

@sehraramiz
Copy link

hi
i had the same issue with custom docs urls showing wrong url in the logs,
i think the latest version of the fastapi_cli code is changed from when you worked this on it,
cli module now uses ImportData to get import string and other app module data
i think it's better to add the fastapi app as a field to ImportData and use it on cli module instead of returning a tuple

@FlavienRx
Copy link
Contributor Author

Hi @sehraramiz

You right, I started to refactor my code but I run out of time to finish and push my code 😄

@FlavienRx FlavienRx force-pushed the docs-conditional-panel branch from f45dccf to 9f95bd6 Compare December 16, 2024 19:14
@FlavienRx
Copy link
Contributor Author

@sehraramiz

I did the job, let me know what do you think.

@tiangolo, what do you think about this feature ?

@Stargator
Copy link

A new label has to be added:

Label check failed: required 1 of 'breaking', 'security', 'feature', 'bug', 'refactor', 'upgrade', 'docs', 'lang-all', 'internal', but found 0.

@Stargator
Copy link

This resolves #162

@eden881
Copy link

eden881 commented Aug 3, 2025

Would this work if I disable the URLs entirely?
In my case I depend on an env var:

app = FastAPI(
    lifespan=lifespan,
    docs_url="/docs" if DEV_MODE else None,
    redoc_url="/redoc" if DEV_MODE else None,
    openapi_url="/openapi.json" if DEV_MODE else None
)

@FlavienRx
Copy link
Contributor Author

@eden881 Yep, I had some tests to test this case.

@github-actions github-actions bot added the conflicts Automatically generated when a PR has a merge conflict label Sep 17, 2025
Copy link
Contributor

This pull request has a merge conflict that needs to be resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
conflicts Automatically generated when a PR has a merge conflict
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants